/**
 * Copyright (C) 2008 Happy Fish / YuQing
 * FastDFS Java Client may be copied only under the terms of the GNU Lesser
 * General Public License (LGPL).
 * Please visit the FastDFS Home Page http://www.csource.org/ for more detail.
 */
package org.csource.fastdfs.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.csource.fastdfs.UploadCallback;

/**
 * upload file callback class, local file sender
 * 
 * @author Happy Fish / YuQing
 * @version Version 1.0
 */
public class UploadLocalFileSender implements UploadCallback {
    private String local_filename;

    public UploadLocalFileSender(String szLocalFilename) {
        local_filename = szLocalFilename;
    }

    /**
     * send file content callback function, be called only once when the file uploaded
     * 
     * @param out
     *            output stream for writing file content
     * @return 0 success, return none zero(errno) if fail
     */
    @Override
    public int send(OutputStream out) throws IOException {
        FileInputStream fis;
        int readBytes;
        byte[] buff = new byte[256 * 1024];
        fis = new FileInputStream(local_filename);
        try {
            while ((readBytes = fis.read(buff)) >= 0) {
                if (readBytes == 0) {
                    continue;
                }
                out.write(buff, 0, readBytes);
            }
        } finally {
            fis.close();
        }
        return 0;
    }
}
